package CapaLogica;

import java.util.*;
import CapaAccesoBD.Conector;

public class MultiMecenazgo{
   
    /**
    * Inserta un registro de la galeria en la base de datos
    *
    * @param  pmecena  id del mecena
    * @param  pidartista id del artista
    * @param  pfec_ini fecha inicio del mecenazgo
    * @param  pfec_fin fecha fin del mecenazgo
    * @return   el objeto Mecenazgo
    */
	public  Mecenazgo crear(int pmecena,int pidartista,String pfec_ini,String pfec_fin) 
		throws Exception{
            
		Mecenazgo pmecenazgo=null;
		String sql;
		sql = "INSERT INTO TMecenazgo "+
		"VALUES ("+pmecena+", "+pidartista+", '"+pfec_ini+"', '"+pfec_fin+"');";
		try {
			Conector.getConector().ejecutarSQL(sql);
			pmecenazgo = new Mecenazgo(pfec_ini, pfec_fin,pidartista,pmecena);
		}
		catch (Exception e) {
			throw new Exception ("Ocurrio un error a la hora de registrar.");
		}
		return pmecenazgo;
	}
    /**
    * Actualiza el registro del mecenazgo
    *
    * @param  pmecenazgo  obejto mecenazgo
    */
	public  void actualizar(Mecenazgo pmecenazgo) throws 
			java.sql.SQLException,Exception{
		String sql;
		sql = "UPDATE TMecenazgo"+
		" SET id_mecena="+pmecenazgo.getCodMecena()+" "+
                ",id_artista="+pmecenazgo.getCodArtista()+" "+
                ",fechaInicioMecenazgo='"+pmecenazgo.getFechaInicioMecenazgo()+"' "+
                ",fechaFinMecenazgo='"+pmecenazgo.getFechaFinMecenazgo()+"' "+       
		"WHERE id_mecena="+pmecenazgo.getCodMecena()+" and id_artista="+pmecenazgo.getCodArtista()+";";
		try {
			Conector.getConector().ejecutarSQL(sql);
		}
		catch (Exception e) {
			throw new Exception ("El mecenazgo no ha sido registrada");
		}
	}
    /**
    * Borra el registro del mecenazgo
    *
    * @param  pmecenazgo  obejto mecenazgo
    */
	public  void borrar(Mecenazgo pmecenazgo) throws 
			java.sql.SQLException,Exception{
		String sql;
		sql = "DELETE FROM TMecenazgo "+
		"WHERE id_mecena="+pmecenazgo.getCodMecena()+" and id_artista="+pmecenazgo.getCodArtista()+";";
		try {
			Conector.getConector().ejecutarSQL(sql);
		}
		catch (Exception e) {
			throw new Exception ("Ocurrio un error al eliminar el mecenazgo.");
		}
	}
    /**
    * Busca coincidencias de artistas pertenecientes a 
    * un mecenazgo
    *
    * @param  pid_artista  id del artista
    * @return   ArrayList<Mecenazgo>
    */
        public ArrayList<Mecenazgo> buscarPorIdArtista(int pid_artista) throws Exception{
                Mecenazgo objMecenazgo;
                ArrayList<Mecenazgo> listaMecenazgos;
                String sql;
                java.sql.ResultSet rs;
                        sql = "SELECT id_mecena, id_artista, fechaInicioMecenazgo, fechaFinMecenazgo" + 
                          " FROM TMecenazgo " + 
                          "WHERE id_artista = "+pid_artista+";";
                try{
                        rs = Conector.getConector().ejecutarSQL(sql,true);
                        listaMecenazgos = new ArrayList<>();
                        if (rs.next()) {
                                do{
                                        objMecenazgo = new Mecenazgo (rs.getString("fechaInicioMecenazgo"), rs.getString("fechaFinMecenazgo"), rs.getInt("id_mecena"), rs.getInt("id_artista"));
                                        listaMecenazgos.add(objMecenazgo);
                                }while (rs.next());
                        }
                }catch (Exception e){
                        throw new Exception ("No hay Mecenazgos con ese nombre.");
                }
                rs.close();

                return listaMecenazgos;
        }
    /**
    * Busca coincidencias de aritas mecenados  
    * por un mecena
    *
    * @param  pid_artista  id del artista
    * @return   ArrayList<Mecenazgo>
    */
        public ArrayList<Mecenazgo> buscarPorIdMecena(int pid_artista) throws Exception{
                Mecenazgo objMecenazgo;
                ArrayList<Mecenazgo> listaMecenazgos;
                String sql;
                java.sql.ResultSet rs;
                        sql = "SELECT id_mecena, id_artista, fechaInicioMecenazgo, fechaFinMecenazgo" + 
                          " FROM TMecenazgo " + 
                          "WHERE id_mecena = "+pid_artista+";";
                try{
                        rs = Conector.getConector().ejecutarSQL(sql,true);
                        listaMecenazgos = new ArrayList<>();
                        if (rs.next()) {
                                do{
                                        objMecenazgo = new Mecenazgo (rs.getString("fechaInicioMecenazgo"), rs.getString("fechaFinMecenazgo"), rs.getInt("id_mecena"), rs.getInt("id_artista"));
                                        listaMecenazgos.add(objMecenazgo);
                                }while (rs.next());
                        }
                }catch (Exception e){
                        throw new Exception ("No hay Mecenazgos con ese nombre.");
                }
                rs.close();

                return listaMecenazgos;
        }

    /**
    * Busca coincidencias de mecenazgos por artista
    * y mecna
    *
    *@param  pid_mecena id del mecena
    * @param  pid_artista  id del artista
    * @return   Mecenazgo objeto
    */
        public Mecenazgo buscarPorIdMecenaIdArtista(int pid_mecena, int pid_artista) throws Exception{
                Mecenazgo objMecenazgo=null;
                String sql;
                java.sql.ResultSet rs;
                sql = "SELECT id_mecena, id_artista, fechaInicioMecenazgo, fechaFinMecenazgo" + 
                          " FROM TMecenazgo " + 
                          "WHERE id_mecena = "+pid_mecena+" and id_artista = "+pid_artista+";";
                try{

                        rs = Conector.getConector().ejecutarSQL(sql,true);
                        if(rs.next())
                            objMecenazgo = new Mecenazgo (rs.getString("fechaInicioMecenazgo"), rs.getString("fechaFinMecenazgo"), rs.getInt("id_mecena"), rs.getInt("id_artista"));

                }catch (Exception e){ 
                        throw new Exception ("No hay Mecenazgos con esa id.");
                }
                rs.close();

                return objMecenazgo;
        }
        
}